package com.browsesoft.authentication;

import javax.servlet.http.HttpServletRequest;

import org.w3c.dom.Element;

import com.browsesoft.user.User;

/**
 * 认证模式
 */
public abstract class AuthenticationMode {
	/**
	 * 对应的配置元素
	 */
	private Element element;

	/**
	 * 是否默认模式
	 */
	private boolean defaultMode = false;

	public void setElement(Element e) {
		this.element = e;
		// 有默认标记，是默认模式
		if (e.hasAttribute("default")) {
			defaultMode = true;
		}
	}

	public Element getElement() {
		return this.element;
	}

	public boolean isDefaultMode() {
		return this.defaultMode;
	}

	/**
	 * 根据发送过来的请求，得到认证成功的用户，如果认证失败，抛出认证失败异常
	 */
	public abstract User authenticate(HttpServletRequest request)
			throws AuthenticationException;
}
